<?php

class grupoSecurity extends osecurity implements ocorrencia_security{
    
    protected $menu = array(
        'Adicionar Grupo'     => array('link' => 'ocorrencia/grupo/formulario/', 'cod' => false, 'permission' => 'C'),
        'Grupos Arquivados'   => array('link' => 'ocorrencia/grupo/arquivado/', 'cod' => false, 'permission' => 'R'),
        'Criar Sub Grupo'     => array('link' => 'ocorrencia/grupo/subgrupo/', 'cod' => true, 'permission' => 'U'),
        'Arquivar Grupo'      => array('link' => 'ocorrencia/grupo/arquivar/', 'cod' => true, 'permission' => 'D'),
        'Desarquivar Grupo'   => array('link' => 'ocorrencia/grupo/arquivar/', 'cod' => true, 'permission' => 'D'),
        'Criar Assunto'       => array('link' => 'ocorrencia/grupo/novaocorrencia/', 'cod' => true, 'permission' => 'U'),
        'Voltar ao grupo'     => array('link' => 'ocorrencia/grupo/show/', 'cod' => true, 'permission' => 'R'),
        'Pessoas no grupo'    => array('link' => 'ocorrencia/grupo/participantes/', 'cod' => true, 'permission' => 'U'),
        'Editar Grupo'        => array('link' => 'ocorrencia/grupo/editar/', 'cod' => true, 'permission' => 'U'),
        'Excluir Grupo'       => array('link' => 'ocorrencia/grupo/excluir/', 'cod' => true, 'permission' => 'D'),
        'Arquivadas'          => array('link' => 'ocorrencia/grupo/arquivo/', 'cod' => true, 'permission' => 'R'),
        'Lixeira'             => array('link' => 'ocorrencia/grupo/lixeira/', 'cod' => true, 'permission' => 'D'),
        'Em atraso'           => array('link' => 'ocorrencia/grupo/filter/', 'cod' => true, 'permission' => 'R', 'filter' => 'atraso'),
        'Minhas Solicitações' => array('link' => 'ocorrencia/grupo/filter/', 'cod' => true, 'permission' => 'R', 'filter' => 'solicitadas'),
        'Últimas Discussões'  => array('link' => 'ocorrencia/grupo/filter/', 'cod' => true, 'permission' => 'R', 'filter' => 'ultimas'),
    );
         
    
    private $suboptions = array('Criar Sub Grupo','Pessoas no grupo', 'Editar Grupo', 'Excluir Grupo', 'Arquivar Grupo', 'Desarquivar Grupo');
    private $filthers   = array('Arquivadas', 'Lixeira', 'Minhas Solicitações', 'Últimas Discussões', 'Em atraso');
    
    protected $permissions = array(
        'UserIsAdmin'         => 'CRUD',
        'SuperiorHierarquico' => 'RU',
        'PertenceAoGrupo'     => 'R'
    );
    protected $check_functions = array('UserIsAdmin', 'SuperiorHierarquico', 'PertenceAoGrupo');
    
    public function getMenu($cod = ""){
        
        return array();
        if(CURRENT_ACTION != 'index' && CURRENT_ACTION != 'arquivado')  {
            unset($this->menu['Adicionar Grupo']);
            unset($this->menu['Grupos Arquivados']);
        }
        //gera um menu acessível para o recurso de menus
        $out = $options = $filthers = array();
        $permissons = $this->get_permissions($cod);
        
        if($cod != ""){
            $this->LoadModel('ocorrencia/grupo', 'gr');
            
            //se o grupo não está vazio, remove a opção de excluílo do painel
            if(!$this->gr->checkGroupIsEmpty($cod)){
                unset($this->menu['Excluir Grupo']);
            }
            
            if($this->gr->IsArquivado($cod)){
                unset($this->menu['Arquivar Grupo']);
                unset($this->menu['Criar Assunto']);
            }else unset($this->menu['Desarquivar Grupo']);
        }
        
        foreach($this->menu as $name => $arr){
            //retira do menu os itens que apontam para a página atual
            if(CURRENT_PAGE == $arr['link'] || CURRENT_PAGE.$cod == $arr['link']) continue;
            
            //retira os itens dos quais o usuário não tem permissão de acessar
            if(strstr($permissons, $arr['permission']) === false) continue;
            
            //retira os links que demandam um código
            if($cod == "" && $arr['cod'] == true) continue;
            
            //adiciona o código ao link
            elseif($arr['cod']) $arr['link'].= $cod;
            
            //salva o link
            if(in_array($name, $this->suboptions)) $options[$name] = $arr['link'];
            elseif(in_array($name, $this->filthers)){
                $filthers[$name] = $arr['link'];
                if(array_key_exists('filter', $arr)) $filthers[$name] .= "/".$arr['filter'];
            }
            else $out[$name] = $arr['link'];
        }
        
        if(!empty ($options)) $out['Opções'] = $options;
        if(!empty ($filthers)) $out['Filtros'] = $filthers;

        if(strstr($permissons, "D") !== false){
            if(array_key_exists('Excluir Grupo', $out)){
                $this->LoadResource('html', 'html');
                $this->html->LoadJqueryFunction(
                "$('#excluir-grupo a').click(function(){
                    if(!confirm('".CONFIRMAR_EXCLUSAO_DE_GRUPO."')){ 
                        return false;
                    }
                });");
            }
        }
        parent::addMenu('body-top', $out);
    }
    
}

?>